//
//  SLinkList.hpp
//  DS_Demo
//
//  Created by apple on 2023/9/28.
//

#ifndef SLinkList_hpp
#define SLinkList_hpp

#include "../../include/DS_Define.h"

Status InitList(SLinkList *L);    // 构造一个空的线性表L
void DestroyList(SLinkList *L);   // 销毁线性表L
void ClearList(SLinkList *L);     // 将L重置为空表
Status ListEmpty(SLinkList L);    // 线性表是否为空表
int ListLength(SLinkList L);      // 返回线性表中数据元素的个数
void GetElem(SLinkList L, int i, LElemType *e); // 用e返回线性表L中的第i个元素
int LocateElem(SLinkList L, LElemType e);  // 定位e元素在线性表L中的位置
void PriorElem(SLinkList L, LElemType cur_e, LElemType *pre_e); // 返回当前元素的前驱
void NextElem(SLinkList L, LElemType cur_e, LElemType *next_e); // 返回当前元素的后继
void ListInsert(SLinkList *L, int i, LElemType e); // 在线性表L的第i个位置之前插入元素e
void ListDelete(SLinkList *L, int i, LElemType *e); // 删除线性表L中第i个位置的元素并用e返回
void ListTraverse(SLinkList L); // 遍历线性表
void UnionList(SLinkList *La, SLinkList Lb); // 求两个线性表的并集
void MergeList(SLinkList La, SLinkList Lb, SLinkList *Lc);
void IncSort(SLinkList *L); // 线性表中的元素递增排序
void DecSort(SLinkList *L); // 线性表中的元素递减排序

#endif /* SLinkList_hpp */
